package com.zkthink.ceres.order.service;

import com.zkthink.base.R;
import com.zkthink.base.service.SuperService;
import com.zkthink.ceres.order.dto.comment.*;
import com.zkthink.ceres.order.entity.Comment;
import com.zkthink.ceres.order.vo.comment.CommentPageVO;

/**
 * <p>
 * 业务接口
 * 评价表
 * </p>
 *
 * @author JustArgo
 * @date 2020-07-12
 */
public interface CommentService extends SuperService<Comment> {

    /**
     * 管理后台查询评论列表
     * @param dto
     * @return
     */
    R<QueryCommentPageDTO> findCommentList(AdminQueryCommentDTO dto);

    /**
     * 管理后台操作评论
     * @param handleCommentDTO
     * @return
     */
    R<Boolean> handleComment(HandleCommentDTO handleCommentDTO);

    /**
     * 用户对商品进行评价
     * @param comment
     * @return
     */
    R<Boolean> comment(Comment comment);

    /**
     * 用户追加评价
     * @param comment
     * @return
     */
    R<Boolean> additionalComment(Comment comment);

    /**
     * 点赞或取消点赞
     * @param likeCommentDTO
     * @return
     */
    R<Boolean> likeOrUnlikeComment(LikeCommentDTO likeCommentDTO);

    /**
     * 查看我的评论列表
     * @param queryCommentDTO
     * @return
     */
    R<CommentPageVO> findMyCommentList(QueryCommentDTO queryCommentDTO);

    /**
     * 查询商详或
     * @param commentDTO
     * @return
     */
    R<CommentPageVO> findProductStoreCommentList(QueryProductOrStoreCommentDTO commentDTO);

    /**
     * App发表评价
     * @param dto
     * @return
     */
    R<Boolean> publishComment(PublishCommentDTO dto);

    /**
     * 我的评价
     * @return
     */
    R myComment();

    /**
     * 假删除删除评价
     * @param id
     * @return
     */
    R delect(Long id);
}
